/*
1 输入框绑定 只改变事件 input事件
  1 获取到输入框的值
  2 合法性判断
  3 校验通过 把输入框的值 发送到后台
  4 返回的数据打印到页面上
2 防抖 （防止抖动）
  0 防抖 一般用于输入框中 防止重复输入 重复发送请求
  0.1 节流 一般用在页面下拉或者上拉
  1 定义全局的定时器id
*/
// 0 引入用来发送请求的 方法
import { request } from "../../request/index.js"
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({
  data:{
    goods:[],
    // 取消按钮是否显示
    isFocus:false,
    // 输入框的值
    inputValue:""
  },
  TimeId:-1,
  // 输入框的改变了就会触发的事件
  handleInput(e){
    // 1 获取输入框的值
    const {value} = e.detail;
    // 2 检测合法性
    if(!value.trim()){
      // trim 去除字符串首尾空格
      // 值不合法
      this.setData({
        goods:[],
        isFocus : false
      })
      return;
    }
    // 显示取消按钮
    this.setData({
      isFocus : true
    })
    // 3 准备发送请求获取数据库
    clearTimeout(this.TimeId);
    this.TimeId =setTimeout(() => {
      this.qsearch(value)
    }, 1000);
  },
  // 发送请求获取搜索建议 数据
  async qsearch(query){
    const res = await request({url:"/goods/qsearch",data:{query}})
    // console.log(res);
    this.setData({
      goods:res
    })
    
  },
  // 点击取消按钮后需要做的事情
  handleCancel(){
    this.setData({
      inputValue:"",
      goods:[],
      isFocus : false
    })
  }
})